const { query, testConnection } = require('./db');

/**
 * 初始化数据库表
 */
async function initDatabase() {
  try {
    // 测试连接
    const connected = await testConnection();
    if (!connected) {
      console.error('❌ 数据库连接失败，无法初始化表');
      return false;
    }

    // 检查 word 表是否存在
    const tables = await query(`
      SELECT TABLE_NAME 
      FROM information_schema.TABLES 
      WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'word'
    `);

    if (tables.length === 0) {
      console.log('📝 创建 word 表...');
      
      // 创建 word 表
      await query(`
        CREATE TABLE IF NOT EXISTS word (
          id INT AUTO_INCREMENT PRIMARY KEY,
          title VARCHAR(255) NOT NULL COMMENT '标题',
          content TEXT COMMENT '内容',
          material TEXT COMMENT '材料',
          created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
          updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
          INDEX idx_title (title)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='词语表'
      `);
      
      console.log('✅ word 表创建成功');
    } else {
      console.log('✅ word 表已存在');
    }

    return true;
  } catch (error) {
    console.error('❌ 初始化数据库失败:', error.message);
    return false;
  }
}

// 如果直接运行此文件，执行初始化
if (require.main === module) {
  initDatabase()
    .then(success => {
      if (success) {
        console.log('🎉 数据库初始化完成');
        process.exit(0);
      } else {
        console.error('❌ 数据库初始化失败');
        process.exit(1);
      }
    })
    .catch(error => {
      console.error('❌ 发生错误:', error);
      process.exit(1);
    });
}

module.exports = { initDatabase };

